﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using CodeSaude.Domain.Entities;
using CodeSaude.Domain.Enums;

namespace CodeSaude.Application.ViewModels
{
    public class PessoaViewModel
    {
        public PessoaViewModel()
        {
            RegistrosAtendimento = new List<Prontuario>();
            ResultadosLab = new List<resultado_lab>();
        }

        public int PessoaId { get; set; }
        public int? IdProntuario { get; set; }

        [Display(Name = @"Nome")]
        [Required(ErrorMessage = @"O Nome da pessoa é obrigatóirio")]
        public string NomePessoa { get; set; }

        [Display(Name = @"Data Nascimento")]
        public DateTime? DataNascPessoa { get; set; }

        [Display(Name = @"Raça")]
        public int? IdRacaCor { get; set; }

        [Display(Name = @"Sexo")]
        public string SexoPessoa { get; set; }

        [Display(Name = @"Nome Pai")]
        public string NomePaiPessoa { get; set; }

        [Display(Name = @"Nome Mãe")]
        public string NomeMaePessoa { get; set; }

        [Display(Name = @"Nacionalidade")]
        public int? IdNacionalidade { get; set; }

        [Display(Name = @"Naturalidade")]
        public string NaturalidadePessoa { get; set; }

        [Display(Name = @"UF Naturalidade")]
        public string UFNaturalidadePessoa { get; set; }

        [Display(Name = @"País Origem")]
        public int? IdPaisOrigem { get; set; }

        [Display(Name = @"Data Entrada")]
        public DateTime? DataEntrada { get; set; }

        [Display(Name = @"Data Naturalização")]
        public DateTime? DataNaturalizacao { get; set; }

        [Display(Name = @"Número Naturalização")]
        public string NumeroNaturalizacao { get; set; }

        [Display(Name = @"Escolaridade")]
        public int? IdEscolaridade { get; set; }

        [Display(Name = @"Frequenta Escola")]
        public string FrequentaEscola { get; set; }

        [Display(Name = @"Aposentado")]
        public string Aposentado { get; set; }

        [Display(Name = @"Profissão")]
        public string Profissao { get; set; }

        [Display(Name = @"Possui Ocupação")]
        public string PossuiOcupacao { get; set; }

        [Display(Name = @"Tipo Certidão")]
        public int? IdTipoCertidao { get; set; }

        [Display(Name = @"Nome Cartório")]
        public string NomeCartorio { get; set; }

        [Display(Name = @"Livro Certidão")]
        public string LivroCertidao { get; set; }

        [Display(Name = @"Folha Certidão")]
        public string FolhaCertidao { get; set; }

        [Display(Name = @"Termo Certidão")]
        public string TermoCertidao { get; set; }

        [Display(Name = @"Data Emissão Certidão")]
        public DateTime? DataEmissaoCertidao { get; set; }

        [Display(Name = @"E-mail")]
        public string Email { get; set; }

        [Display(Name = @"Tel. Celular")]
        public string Celular { get; set; }

        [Display(Name = @"Tel. Fixo")]
        public string TelefoneContato { get; set; }

        [Display(Name = @"Nome Contato")]
        public string NomeContato { get; set; }

        [Display(Name = @"Grau Parentesco")]
        public int? IdParentescoContato { get; set; }

        [Display(Name = @"Etnia")]
        public int? IdEtnia { get; set; }

        [Display(Name = @"RG")]
        public string RGPessoa { get; set; }

        [Display(Name = @"Órgão Emissor")]
        public int? IdOrgaoEmissor { get; set; }

        [Display(Name = @"UF RG")]
        public string UfRg { get; set; }
        
        [Display(Name = @"Data Emissão")]
        public DateTime? DataEmissaoRG { get; set; }

        [Display(Name = @"CPF")]
        public string CPFPessoa { get; set; }

        [Display(Name = @"Ocupação")]
        public string OcupacaoPessoa { get; set; }

        [Display(Name = @"Estado Civil")]
        public string EstadoCivilPessoa { get; set; }

        [Display(Name = @"CEP")]
        public string CEPPessoa { get; set; }

        [Display(Name = @"Tipo Logradouro")]
        public int? IdTipoLogradouro { get; set; }

        [Display(Name = @"Rua")]
        public string RuaPessoa { get; set; }

        [Display(Name = @"Bairro")]
        public string BairroPessoa { get; set; }

        [Display(Name = @"Cidade")]
        public string CidadePessoa { get; set; }

        [Display(Name = @"Número")]
        public string NumeroPessoa { get; set; }

        [Display(Name = @"Complemento")]
        public string ComplementoPessoa { get; set; }

        [Display(Name = @"UF")]
        public string UFPessoa { get; set; }

        [Display(Name = @"Telefone")]
        public string TelefonePessoa { get; set; }

        [Display(Name = @"Outro Endereço")]
        public string OutroEnderecoPessoa { get; set; }

        [Display(Name = @"Ponto Referência")]
        public string PontoReferenciaPessoa { get; set; }

        [Display(Name = @"CNS")]
        public string CNSPessoa { get; set; }

        public int FlagSyncSGE { get; set; }

        [Display(Name = @"Situação")]
        public int IdSituacao { get; set; }

        public string CodigoPacienteBiosLab { get; set; }
        public virtual ICollection<Prontuario> RegistrosAtendimento { get; set; }
        public virtual ICollection<resultado_lab> ResultadosLab { get; set; }

        public IEnumerable<SelectListItem> ListaSituacoes { get; set; }

        public string Situacao { get; set; }

        public string ClasseCssLabelSituacao
        {
            get
            {
                var cssClassLabel = string.Empty;
                switch (IdSituacao)
                {
                    case (int)SituacaoEnum.Ativo:
                        cssClassLabel = "label sitAtivo";
                        break;
                    case (int)SituacaoEnum.Inativo:
                        cssClassLabel = "label sitInativo";
                        break;
                }

                return cssClassLabel;
            }
        }
        
    }
}
